Docker (in EGroupware)?
Dieser Beitrag ist (noch nicht) nie komplett fertig. Kleinere Ergänzungen folgen…
Die Standard-EGroupware-Installation verwendet ab der Version 19.1 Docker. Dies dient zur Entkopplung der EGroupware-Installation vom Host-System und ermöglicht weitere Services auf dem Host-System einzurichten.
Dieser Beitrag soll die Fragen
- Warum Docker?
- Was ist Docker?
- Wie funktioniert EGroupware in Docker?
- Wie ist das Zusammenspiel nach dem Update auf 19.1?
klären.
Warum Docker?
Kurzform:
-
Ermöglicht eine optimal konfigurierte Installation (Performance/Sicherheit)
-
Weitere Services können leicht integriert werden.
-
Mit der 19.1 werden Rocket.Chat und Collabora Online/CODE mit ausgeliefert (1)
-
Es kann schnell/leicht auf einen älteren Stand zurück gestellt werden
-
Die Abhängigkeiten zum Host und den Anwendungen untereinander werden vermieden
-
Versionskonflikte (PHP, DB, …) werden vermieden
(1) Bei einer Standardinstallation wird Collabora Online mit installiert. Weiteres wie Rocket.Chat werden nach der Netzwerk/DNS/SSL-Konfiguration nachinstalliert, Das ermöglicht eine sichere Installation und erspart einige nachträgliche Konfiguration.
Im Detail:
Was ist Docker?
Docker ist eine Container-Virtualisierungs-Lösung. Es ist die aktuell gängigste Virtualisierungslösung, um Anwendungs-Container auszuliefern. Container-Virtualisierung hat eine lange Historie auf Linux-Servern (vServer, OpenVZ, LXC) und ist mittlerweile auch für Windows verfügbar (Docker).
Der grundsätzliche Unterschied zu Vollvirtualisierungs-Lösungen (XEN, KVM, Hyper-V, …) ist die Eigenschaft, dass wesentliche Teile des Host-Betriebssystems (Kernel) mit verwendet werden. Dadurch bleiben Container “schlanker” und haben noch weniger “Verluste” (Docker: ~1%) durch die Virtualisierung.
Die Software Docker ist ist relativ leichtgewichtig und benötigt auf dem Host wenig Ressourcen (Festplattenplatz/RAM/CPU). Die Container beinhalten i.d.R. die komplette Anwendung inklusive z. B. den Webserver. Trotzdem bleiben die Container schlank, da nur die nötigsten Dinge installiert werden.
Innerhalb eines Containers ist es nun möglich, z. B. mit unterschiedlichen PHP-Versionen zu arbeiten. Bislang kam es immer zu Problemen, wenn unterschiedliche Services unterschiedliche PHP-Versionen voraussetzten.
EGroupware in Docker
EGroupware wird als Container mit einem aktuellen PHP (08.2019: PHP 7.3) und einem NGINX (08.2019: 1.16) auf einem Ubuntu (08.2019: 18.04) ausgeliefert. Das PHP in Verbindung mit der FPM-Konfiguration des NGINX sorgt für eine optimale Performance. Der Stand der Software sorgt für die höchstmögliche Sicherheit.
Somit wird eine optimale Konfiguration ausgeliefert und durch Updates des Containers auf dem aktuellen (Sicherheits-)Stand gehalten.
In diesem Container ist ausschließlich die EGroupware-Anwendung enthalten. Die Datenbank, die Dateien aus dem Dateimanager und die EGroupware-Datensicherungen verbleiben auf dem Host. Somit kann bei einem Update einfach der Container ausgetauscht werden.
Es wird ein weiterer Container “watchtower” installiert. Dieser Container hat nur die Aufgabe, Nachts um 04:00 Uhr zu prüfen ob es Updates der Container gibt. Sind welche vorhanden, werden diese herunter geladen und "installiert"
Diese Automatik kann abgeschaltet werden.
Wenn nach einem Update des EGw-Containers (EGroupware-Update) Probleme festgestellt werden, kann schnell und unkompliziert auf die/eine vorige Version zurück gestellt werden.
Durch Docker können künftig weitere Container mit ergänzenden Services ausgeliefert und in EGroupware integriert werden.
Stand 08.2019 werden Container für Rocket.Chat und Collabora Online mitgeliefert. Sind diese nicht gewünscht, können diese deinstalliert oder deaktiviert werden. Sollen die Container nicht mitinstalliert werden, so kann auch das konfiguriert werden.
Docker: Update 17.1 => 19.1
Die Systemvoraussetzungen der 17.1 für das Upgrade und die Anforderungen der 19.1 sind dokumentiert.
Bei einem Update von 17.1 auf 19.1 wird
- Docker nachinstalliert,
- die Container herunter geladen,
- die Container gestartet,
- die nötigen Konfigurationen vom Web-/Proxy-Server vorgenommen.
Durch den Reverse-Proxy werden die einzelnen Services unter einer Adresse von außen erreichbar. Die SSL-Konfiguration braucht dann auch nur auf diesem Reverse-Proxy eingerichtet werden. Nicht auf jedem Service einzeln.
Siehe auch: SSL-Verschlüsselung mit Let’s Encrypt
Zur Veranschaulichung eine Grafik:
Hier wird ein Upgrade einer 17.1-Standand-Installation hinter einem Router mit SSL-Konfiguration auf dem Webserver dargestellt. Andere Konstellationen können entsprechend anders aussehen und somit unter Umständen auch im Upgrade unterschiedlich ablaufen.
Docker-Tools
Ich habe dazu einen Artikel geschrieben:
https://help.egroupware.org/t/de-docker-werkzeuge/74119
Weiterführende Links:
EGroupware:
GitHub EGroupware Wiki: 19.1 Installation using egroupware docker RPM DEB package
GitHub EGroupware Wiki: 19.1 Release notes and distribution specific instructions
Vortrag von den Kielux 2021: Docker für EGroupware
Mehr Docker:
Microsoft: https://docs.microsoft.com/de-de/dotnet/architecture/microservices/container-docker-introduction/docker-defined
Red Hat: Was ist Docker?
JAXenter: Grundkurs Docker: Eine praktische Einführung in die Welt der Container
Gute Linksammlungen zu Docker:
https://www.my-it-brain.de/wordpress/linksammlung/
Heise Verlag: Sonderheft c’t Wissen Docker:
https://shop.heise.de/katalog/ct-wissen-docker-pdf?wt_pdsrc=productList
Rheinwerk Verlag: Docker:
Golem.de - Ab in den Container
DevOps Cycle - The Ultimate Docker Cheat Sheet
Bei Fragen oder Anregungen zu diesem Beitrag bitte ein Thema im Forum erstellen.